#ifndef _MAT_DEF_H_
#define _MAT_DEF_H_

#include "./../math_def.h"
#include "./../math_except.h"

//#include "./../../m_thread.h"
//using namespace MThread;

namespace Mathematics {
	namespace Matrix {
		
		/*! Type declaration for matrix' actions */
		typedef enum {
			/*! Skip the present value */
			pr, 
			/*! Goes for next Matrix line */
			nl
		} MatrixManipulation;
		
		//	ostream handling
		/*! 
			ostream printing
			
			\param file ostream where the log should be printed
			\param obj the object to be printed
			\return modified ostream
			
			\code
			cout << pr << endl; // prints the value of the manipulation
			\endcode
		*/
		inline ostream& operator << (ostream &file, const MatrixManipulation &obj) {
			if( obj == pr ) return file << "pr - skip value";
			if( obj == nl ) return file << "nl - next line";
			return file << "unknown";
		};
		
	};
};

#endif
